package controlador;
import java.io.IOException;
import java.util.ArrayList;

import javax.servlet.ServletException;

import modelo.Articulo;
import modelo.ArticuloDAO;
import modelo.ItemCompra;
import controlador.FrontCommand;



public class CommandAnnadirAlCarrito extends FrontCommand{

	public CommandAnnadirAlCarrito() {
	}

	public void process() throws ServletException, IOException {
		try { 
			int cant = Integer.parseInt(request.getParameter("unidades"));
			String cod = request.getParameter("codigo");
			ArrayList<ItemCompra> array = (ArrayList<ItemCompra>) request.getSession().getAttribute("carritoCompra");	
			ItemCompra item = new ItemCompra();
			boolean encontro=false;
			boolean sepasa=false;
			for (int i = 0; i < array.size(); i++) {
				if(array.get(i).getCodigoArticulo().equals(cod)){
					item = array.get(i);
					double existencia= ExistenciaArticulo(cod);
					if((item.getCantidad()+cant)<=existencia){
						array.remove(i);
						item.setCantidad(item.getCantidad()+cant);
					}
					else
						sepasa =true;
					encontro = true;
					break;
				}
			}
			if(!encontro){
				item.setCodigoCompra("0");
				item.setCodigoArticulo(cod);
				item.setCantidad(cant);
			}

			if(!sepasa){
				array.add(item);

				request.setAttribute("carritoCompra", array);
				response.sendRedirect("/ComercioGT/vista/consultararticulodisponibles.jsp");
			}
			else
				response.sendRedirect("vista/paginamensaje.jsp?mensaje=Disculpe, no tenemos suficientes existencias. Por favor limpie el carrito de compras");

		} catch (NullPointerException e) {
			// TODO Auto-generated catch block
			//e.printStackTrace();
			response.sendRedirect("index.jsp");
		} 	
	}

	private double ExistenciaArticulo(String cod) {
		ArticuloDAO a=new ArticuloDAO();
		Articulo ar;
		ar=a.consultarArticulos(cod);
		return ar.getExistencia();
	}

}



